// 祝福墙功能
document.addEventListener('DOMContentLoaded', function() {
    // 加载祝福数据
    loadWishes();
    
    // 初始化颜色选择器
    initColorSelector();
    
    // 绑定表单提交事件
    document.getElementById('wish-form').addEventListener('submit', function(e) {
        e.preventDefault();
        addNewWish();
    });
});

// 加载祝福数据
function loadWishes() {
    // 先从本地存储加载
    const savedWishes = localStorage.getItem('birthdayWishes');
    
    if (savedWishes) {
        // 有本地数据，使用本地数据
        renderWishes(JSON.parse(savedWishes));
    } else {
        // 没有本地数据，从JSON文件加载
        loadJSON('data/wishes.json').then(data => {
            if (data && data.wishes) {
                // 保存到本地存储
                localStorage.setItem('birthdayWishes', JSON.stringify(data.wishes));
                renderWishes(data.wishes);
            }
        });
    }
}

// 渲染祝福卡片
function renderWishes(wishes) {
    const container = document.getElementById('wishes-container');
    container.innerHTML = '';
    
    // 如果没有祝福
    if (!wishes || wishes.length === 0) {
        container.innerHTML = `
            <div class="empty-state">
                <div class="empty-icon"><i class="fa fa-comment-o"></i></div>
                <div class="empty-text">还没有祝福哦，快来添加第一条祝福吧！</div>
            </div>
        `;
        return;
    }
    
    // 按日期倒序排序（最新的在前面）
    wishes.sort((a, b) => new Date(b.date) - new Date(a.date));
    
    // 创建祝福卡片
    wishes.forEach(wish => {
        const card = document.createElement('div');
        
        // 随机旋转角度和浮动动画时长
        const rotation = (Math.random() * 10) - 5; // -5到5度
        const floatDuration = Math.random() * 4 + 4; // 4到8秒
        
        card.className = 'wish-card card';
        card.style.setProperty('--rotation', `${rotation}deg`);
        card.style.setProperty('--float-duration', `${floatDuration}s`);
        card.style.setProperty('--card-color', wish.color);
        
        // 卡片颜色
        const textColor = getContrastColor(wish.color);
        
        card.innerHTML = `
            <div class="wish-author">${wish.name}</div>
            <div class="wish-content">${wish.content}</div>
            <div class="wish-meta">
                <span class="wish-date">${formatDate(wish.date)}</span>
                <span class="wish-heart"><i class="fa fa-heart"></i></span>
            </div>
        `;
        
        // 点击卡片效果
        card.addEventListener('click', function() {
            if (this.style.transform.includes('scale(1.1)')) {
                this.style.transform = `rotate(${rotation}deg)`;
                this.style.zIndex = '';
            } else {
                this.style.transform = 'rotate(0deg) scale(1.1)';
                this.style.zIndex = '30';
            }
        });
        
        container.appendChild(card);
        
        // 添加淡入动画
        setTimeout(() => {
            card.style.animation = 'fade-in 0.5s ease forwards';
        }, 100 * (wishes.indexOf(wish) % 10));
    });
}

// 初始化颜色选择器
function initColorSelector() {
    const colorOptions = document.querySelectorAll('.color-option');
    const colorInput = document.getElementById('color');
    let selectedColor = '#FF6B9B'; // 默认颜色
    
    // 设置初始选中状态
    colorOptions.forEach(option => {
        if (option.dataset.color === selectedColor) {
            option.classList.add('selected');
        }
        
        option.addEventListener('click', function() {
            // 更新选中状态
            colorOptions.forEach(opt => opt.classList.remove('selected'));
            this.classList.add('selected');
            
            // 更新选中的颜色
            selectedColor = this.dataset.color;
            colorInput.value = selectedColor;
        });
    });
}

// 添加新祝福
function addNewWish() {
    const nameInput = document.getElementById('name');
    const contentInput = document.getElementById('content');
    const colorInput = document.getElementById('color');
    
    // 获取表单值
    const name = nameInput.value.trim();
    const content = contentInput.value.trim();
    const color = colorInput.value;
    
    // 验证
    if (!name || !content) {
        showToast('请填写完整的祝福信息');
        return;
    }
    
    // 创建新祝福对象
    const newWish = {
        id: Date.now(), // 使用时间戳作为ID
        name: name,
        content: content,
        date: new Date().toISOString().split('T')[0],
        color: color
    };
    
    // 获取现有祝福
    let wishes = [];
    const savedWishes = localStorage.getItem('birthdayWishes');
    if (savedWishes) {
        wishes = JSON.parse(savedWishes);
    }
    
    // 添加到数组开头
    wishes.unshift(newWish);
    
    // 保存到本地存储
    localStorage.setItem('birthdayWishes', JSON.stringify(wishes));
    
    // 重新渲染
    renderWishes(wishes);
    
    // 播放音效
    playSound('audio/add_wish.mp3');
    
    // 显示成功提示
    showToast('祝福添加成功！');
    
    // 重置表单
    nameInput.value = '';
    contentInput.value = '';
}

// 格式化日期
function formatDate(dateString) {
    const date = new Date(dateString);
    return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
}

// 获取对比色（确保文字在背景上可见）
function getContrastColor(hexColor) {
    // 转换为RGB
    const r = parseInt(hexColor.slice(1, 3), 16);
    const g = parseInt(hexColor.slice(3, 5), 16);
    const b = parseInt(hexColor.slice(5, 7), 16);
    
    // 计算亮度
    const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
    
    // 亮度高则用黑色，低则用白色
    return luminance > 0.5 ? '#000000' : '#FFFFFF';
}

// 播放音效
function playSound(url) {
    const audio = new Audio(url);
    audio.volume = 0.5;
    audio.play().catch(e => console.log('播放音效失败:', e));
}
